#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <time.h>

//long long Fib(int n)
//{
//	if (n <= 2)
//	{
//		return 1;
//	}
//	else
//	{
//		return Fib(n - 1) + Fib(n - 2);
//	}
//}
//int main()
//{
//	int begin1 = clock();
//	Fib(10);
//	int end1 = clock();
//
//	int begin2 = clock();
//	Fib(20);
//	int end2 = clock();
//
//	int begin3 = clock();
//	Fib(30);
//	int end3 = clock();
//
//	int begin4 = clock();
//	Fib(40);
//	int end4 = clock();
//
//	int begin5 = clock();
//	Fib(50);
//	int end5 = clock();
//
//	printf("end1:%d\n", end1 - begin1);
//	printf("end2:%d\n", end2 - begin2);
//	printf("end3:%d\n", end2 - begin3);
//	printf("end4:%d\n", end4 - begin4);
//	printf("end5:%d\n", end5 - begin5);
//	
//	return 0;
//}
//int main()
//{
//	int x = 10;
//    char arr[100] = { 0 };
//    int i = 0;
//    while (x > 0)
//    {
//        arr[i] = x % 10;
//        x = x / 10;
//        i++;
//    }
//    printf("%d", i);
//    printf("%s", arr);
//
//}

void singal_dog(int* nums, int size, int* singal_arr)
{
	int val = 0;
	for (int i = 0; i < size; i++)
	{
		val ^= nums[i];
	}
	int pos = 0;
	for (int i = 0; i < 32; i++)
	{
		if (((val >> i) & 1) == 1)
		{
			pos = i;
			break;
		}
	}
	for (int i = 0; i < size; i++)
	{
		if (((nums[i] >> pos)&1) == 1)
		{
			singal_arr[0] ^= nums[i];
		}
		else
		{
			singal_arr[1] ^= nums[i];
		}
	}
}

int main()
{
	int arr[] = { 1,2,3,4,1,2,3,4,5,6 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int singal[2] = { 0 };
	singal_dog(arr, sz,singal);
	printf("%d %d", singal[0], singal[1]);
	return 0;

}




//
//int missingNumber(int* nums, int numsSize) {
//    int n = 0;
//    for (int i = 0; i < numsSize; i++)
//    {
//        n ^= nums[i];
//    }
//    for (int i = 0; i <= numsSize; i++)
//    {
//        n ^= i;
//    }
//    return n;
//
//}




//int missingNumber(int* nums, int numsSize)
//{
//	int sum = numsSize * (numsSize + 1) / 2;
//	for (int i = 0; i < numsSize; i++)
//	{
//		sum = sum - nums[i];
//	}
//	return sum;
//
//}



